home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 090 / pctmay86.arc / AUTHLBL.PRG < prev    next >
Text File  |  1986-03-13  |  4KB  |  78 lines

  1. *AUTHLBL.PRG - Program to print labels for all authors who have 
  2. *               articles in a given issue, suppressing duplicates.
  3.  
  4. * establish environment
  5. SET TALK OFF            && don't echo status changes to screen
  6. SET SAFETY OFF          && overwrite temp files, don't ask user if ok
  7. SET PRINT OFF           && make sure printer is off
  8. SET UNIQUE OFF          && index creation allows duplicate entries
  9. MVOL=0                  && preset memory variables: volume and number
  10. MNUM=0
  11.  
  12. DO WHILE .T.    && loop here if unknown issue or user wants to repeat
  13.   CLEAR                 && clear screen, get volume, number from user
  14.   @ 10,10 SAY "Enter Volume and Number for labels (0,0 to quit):"
  15.   @ 12,20 SAY "Volume" GET MVOL PICTURE "9"
  16.   @ 12,COL()+4 SAY "Number" GET MNUM PICTURE "99"
  17.   READ                  && collect the data from the GETs
  18.  
  19.   IF MVOL+MNUM=0        && user entered zeros to quit
  20.     EXIT
  21.   ENDIF
  22.  
  23.   @ 15,10 SAY "Sorting the author names and culling duplicates."
  24.   SELECT 1              && display comfort message; open article file
  25.   USE ARTICLE INDEX ARTICLE             && index is volume and number 
  26.   SEEK STR(MVOL,1,0)+STR(MNUM,2,0)      && position to start of issue
  27.  
  28.   IF .NOT. FOUND()                      && no such issue, get another
  29.     @ 15,10 SAY "Cannot find issue. Please reenter volume and number."
  30.     WAIT                        && pause for read of message
  31.     LOOP
  32.   ENDIF
  33.  
  34.   *  Copy the primary author names to temp1.dbf  (this is very fast
  35.   *  because the SEEK got us to first record immediately, and the 
  36.   *  COPY will stop as soon as the issue number changes.
  37.   COPY TO TEMP1 REST FIELDS AUTHOR_LN, AUTHOR_FN WHILE MNUM=NUMBER
  38.   SEEK STR(MVOL,1,0)+STR(MNUM,2,0)     && Position to start of issue
  39.  
  40.   *  Now get the coauthors (if any) to temp2.  Use delimited format 
  41.   *  so we can append names to temp1 without conflict in field names
  42.   COPY TO TEMP2 REST FIELDS COAUTHORLN, COAUTHORFN WHILE MNUM=NUMBER ;
  43.     FOR LEN(TRIM(COAUTHORLN+COAUTHORFN)) > 0 DELIMITED
  44.  
  45.   *  Get all the authors together by appending the coauthors to temp1.
  46.   USE TEMP1                     &&  open temp1 in work area 1
  47.   APPEND FROM TEMP2 DELIMITED   &&  add in the coauthors
  48.  
  49.   *  Create a unique index.  This will eliminate duplicate labels.
  50.   INDEX ON UPPER(AUTHOR_LN+AUTHOR_FN) TO TEMP1 UNIQUE
  51.   SELECT 2                   && open the author file in work area 2
  52.   USE AUTHOR INDEX AUTHOR    && key is uppercase last+first name
  53.   SELECT 1                   && set relationship into author file key
  54.   SET RELATION TO UPPER(AUTHOR_LN+AUTHOR_FN) INTO AUTHOR
  55.  
  56.   * Now print the labels.  The parameter "SAMPLE" prints labels of
  57.   * asterisks for alignment. The label generation form looks up
  58.   * all data (author name and address) from the author file.  The
  59.   * temp1 file of uppercase names simply selects and points to the 
  60.   * appropriate author record for the label. Label form contents are:
  61.   *   Line 1:  author->AUTHOR_FN, author->AUTHOR_LN
  62.   *   Line 2:  author->ADDRESS
  63.   *   Line 3:  TRIM(author->CITY) + ",", author->STATE, author->ZIP
  64.   * dBASE III PLUS automatically suppresses blank lines within a label 
  65.   * and formats to the number of lines on the specified label size.  
  66.   * A comma between fields on a label line causes dBASE to trim the 
  67.   * first field of trailing blanks and insert one blank between fields.
  68.   * A sample label:
  69.   *             John Brown
  70.   *             3559 South 24 St.
  71.   *             Stanleyford, IN 76828
  72.   *
  73.   LABEL FORM ARTLABEL SAMPLE TO PRINT
  74.  
  75. ENDDO   && back for another issue.  
  76. CLOSE DATA
  77. RETURN
  78.